﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
using System.Data.OleDb;
using System.Text;

/// <summary>
/// Summary description for patrimonio
/// </summary>
public class Patrimonio
{
	public Patrimonio()
	{
		//
		// TODO: Add constructor logic here
		//
        
	}
    public bool exportarexcel(string condicao, string ordem, string nomearquivo)
    {
        //select especifico para o exportar os computadores
        string select = "SELECT  computadores.estacao AS [Esta&ccedil;&atilde;o], deptos.nome AS Departamento, secoes.secao AS [Se&ccedil;&atilde;o], usuarios.nome AS [Usu&aacute;rio], " +
                                 "usuarios.ramal AS Ramal, computadores.n_patrimonio AS [N&ordm; de Patrim&ocirc;nio], computadores.ip AS [N&ordm; de IP], computadores.n_serie AS [N&ordm; de S&eacute;rie], " +
                                 "marca.marca AS Marca, processadores.processador AS Processador, computadores.memoria AS [Mem&oacute;ria], " +
                                 "computadores.qt_pentes AS [Quantidade de Pentes], hd.tamanho_hd AS [Tamanho do HD], so.so AS [Sistema Operacional], " +
                                 "tipo_monitor.tipo_monitor AS [Tipo do Monitor], tamanho_monitor.tamanho AS [Tamanho do Monitor], " +
                                 "computadores.n_pat_monitor AS [N&ordm; de Patrim&ocirc;nio do Monitor], computadores.tomada_rede AS [Tomada de Rede], " +
                                 "computadores.observacao AS [Observa&ccedil;&atilde;o] " +
                        "FROM    (((((((((computadores INNER JOIN " +
                                 "usuarios ON computadores.cod_usuario = usuarios.codigo) INNER JOIN " +
                                 "deptos ON computadores.cod_depto = deptos.codigo) INNER JOIN " +
                                 "secoes ON computadores.cod_secao = secoes.codigo) INNER JOIN " +
                                 "marca ON computadores.cod_marca = marca.codigo) INNER JOIN " +
                                 "processadores ON computadores.cod_processador = processadores.codigo) INNER JOIN " +
                                 "so ON computadores.cod_so = so.codigo) INNER JOIN " +
                                 "hd ON computadores.cod_hd = hd.codigo) INNER JOIN " +
                                 "tamanho_monitor ON computadores.tamanho_monitor = tamanho_monitor.codigo) INNER JOIN " +
                                 "tipo_monitor ON computadores.tipo_monitor = tipo_monitor.codigo)";
        //string  que vai guardar todo o sql
        string sql;

        if (condicao == "")
        {
            if (ordem == "")
            {
                sql = select + " ORDER BY usuarios.nome";
            }
            else
            {
                sql = select + " ORDER BY " + ordem;
            }
        }
        else
        {
            if (ordem == "")
            {
                sql = select + condicao + " ORDER BY usuarios.nome";
            }
            else
            {
                sql = select + condicao + " ORDER BY " + ordem;
            }
        }

        string conString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bancosit.mdb";

        // cria e abre uma conexão
        OleDbConnection conn = new OleDbConnection(conString);
        conn.Open();

        DataTable dt = new DataTable();
        //cria um adapter e preenche o datatable
        OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);
        adapter.Fill(dt);
        //fecha a conexão
        conn.Close();
        HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
        HttpContext.Current.Response.Charset = "UTF-8";
        

        //Conteúdo do Response
        if (nomearquivo == "")
        {
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=DocumentoExcel.xls");
            HttpContext.Current.Response.Charset = "";
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        }
        else
        {
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename="+nomearquivo+".xls");
            HttpContext.Current.Response.Charset = "";
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        }
        
        //Objetos
        StringWriter stringWrite = new System.IO.StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        //Inclui controles 
        DataGrid dgDados = new DataGrid();
        //HttpContext.Current.Controls.Add(dgDados);

        //Definição de cores        
        dgDados.DataSource = dt;
        dgDados.DataBind();

        //Renderiza o DataGrid
        dgDados.RenderControl(htmlWrite);

        //Inluir a classe de estilo
        //Exporta 
        HttpContext.Current.Response.Write(stringWrite.ToString());
        //encerra
        HttpContext.Current.Response.End();

        return true;
    }

//WHERE        (computadores.codigo = 440)
//ORDER BY usuarios.nome"
}